/*
 * STTQRCode.h
 *
 *  Created on: 2023年2月19日
 *      Author: SIMTUTAI
 */

#ifndef SRC_STTQRCODE_H_
#define SRC_STTQRCODE_H_

#include "widgets/STTCanvas.h"

namespace stt{
/**
 * @ingroup widget
 * @brief 二维码
 */
class STTQRCode: public STTWidget {
public:
	/**
	 * @HideCA
	 * @brief 构造
	 * @param dark_color 二维码主色
	 * @param light_color 二维码背景色
	 */
	STTQRCode(IRuntime* rt, STTWidget* par, const string& desc = "", int size = 100, int dark_color = 0x0, int light_color = 0xFFFFFF);
	/**
	 * @HideCA
	 */
	virtual ~STTQRCode();
    /**
     * @Level2
     * @brief 设置基本参数
     * @param x,y,w,h		位置、大小
     * @param c_bg			背景色
     * @param c_fg			前景色
     * @param data			二维码内容
     */
    void setMainArg(int x=0, int y=0, int w=100, int h=100, int c_bg=0xffffff, int c_fg=0x0, const char* data="www.simtutai.com");
    /**
     * @Level0
     * @brief 更新二维码
     * @param data 二维码内容/data to display
     * @param data_len 字符串长度/length of data in bytes
     * @return 成功返回1，失败返回0  /  1: if no error; 0: on error
     */
    uint8_t update(const void* data="www.simtutai.cn", int data_len=15);
    /**
     * @Level0
     * @brief 更新二维码
     * @param data 二维码内容/data to display
     * @return 成功返回1，失败返回0  /  1: if no error; 0: on error
     */
    uint8_t update(const string& data="www.simtutai.cn");
public:
	/**
	 * @HideCA
	 */
    void onDataChanged(SttObject * org, IVariable* data);
};

typedef STTQRCode* SttQRCode;

}

#endif /* SRC_STTQRCODE_H_ */
